package com.dys.testcollection01;

import java.util.*;

/**
 * @className: com.dys.testcollection01.CollectionTest
 * @description: Collection接口
 * @author: pine cone
 * @version: v1.0.0
 * @createTime: 2024/07/30 下午8:49
 */
public class CollectionTest {
    /**
     * 这是一个main()方法,是应用程序的入口
     *
     * @param args 方法的形参列表,是一个字符串数组,包含了从命令行传递给程序的参数
     */
    public static void main(String[] args) {
        new CollectionTest().testCollectionShow();
    }

    /**
     * Collection集合接口常用抽象方法
     */
    public void testCollectionMethod() {
        /*
         * Collection接口常用抽象方法:
         * 添加: add(E e) addAll(Collection<? extends E> c)
         * 删除：clear() remove(Object o)  removeAll(Collection<?> c)
         * 修改：
         * 查看：size() iterator()
         * 判断：equals(Object o) isEmpty() contains(Object o) retainAll(Collection<?> c)
         * */

        // 1.创建对象：接口不能创建对象,利用其实现类创建对象。
        Collection col = new ArrayList();
        col.add(1);
        col.add(2);
        col.add(3);
        col.add(4);
        // 集合有一个特点：只能存放引用数据类型的数据，不能是基本数据类型
        System.out.println(col.toString());

        // 添加多个值
        List<Integer> list = Arrays.asList(new Integer[]{4, 5, 6, 7});
        // 将另一个集合添加到集合中
        col.add(list);
        System.out.println(col.toString());

        // 删除
        // col.clear();
        // System.out.println(col);
        // col.remove(4);
        // System.out.println(col.toString());
        // col.removeAll(Arrays.asList(new Integer[]{1,2}));
        // System.out.println(col.toString());

        // 查看
        System.out.println("集合内元素的数量: " + col.size());

        // 判断
        System.out.println("集合是否为空：" + col.isEmpty());
        System.out.println("集合是否包含特定的元素: " + col.contains(4));

        Collection col2 = new ArrayList();
        col2.add(11);
        col2.add(22);
        col2.add(33);
        col2.add(44);

        Collection col3 = new ArrayList();
        col3.add(22);
        col3.add(33);
        col3.add(44);
        col3.add(55);
        col3.add(66);

        System.out.println("比较两个集合内容相等：" + col2.equals(col3));
        // 获取两个集合的交集
        boolean b = col2.retainAll(col3);
        System.out.println(b);
    }

    public void testCollectionShow() {
        Collection col = new ArrayList();
        col.add(11);
        col.add(22);
        col.add(33);
        col.add("集合");
        col.add(9.9);
        col.add(true);

        // 遍历方式
        // 方式1：普通for循环
        // for (int i = 0; i < col.size(); i++) {
        //
        // }
        // 方式2：增强for循环
        for (Object obj : col) {
            System.out.println(obj);
        }
        // 方式3：迭代器
        System.out.println("===========迭代器=========");
        Iterator iterator = col.iterator();
        // while (iterator.hasNext()){
        //     System.out.println(iterator.next());
        // }
        // do{
        //     System.out.println(iterator.next());
        // }while (iterator.hasNext());
        for (; iterator.hasNext(); ) {
            System.out.println(iterator.next());
        }
    }
}
